/**
 * Configurazione iniziali
 */
BootApplication.config([ '$controllerProvider', '$compileProvider', '$provide', '$locationProvider', '$httpProvider','ChartJsProvider', '$routeProvider',
			    function( $controllerProvider, $compileProvider, $provide, $locationProvider, $httpProvider,ChartJsProvider, $routeProvider) {
          

    $routeProvider
    
    .when("/:fish", {
    	templateUrl: function(urlattr){
    		return 'pages/fis/fishDetail.jsp';
        }
    })
    .when("/:tank", {
    	templateUrl: function(urlattr){
    		return 'pages/tan/tank.jsp';
        }
    })
    .when("/:plant", {
    	templateUrl: function(urlattr){
    		return 'pages/pla/plant.jsp';
        }
    })
    .when("/", {
    	redirectTo: '/esplora'
    })
    .when("/:name*", {
    	templateUrl: function(urlattr){
    		return 'page/' + urlattr.name + '.jsp';
        }
    });
	
	/**
	 * Register a handler to be called when Ajax requests complete with an error
	 */
	$httpProvider.interceptors.push('HttpInterceptor');
	
	/**
     * Funzione utilizzata per consentire di modificare la url usando le API html5
     */
	/*$locationProvider.html5Mode({
		enabled: true,
		requireBase: false,
		rewriteLinks: false
	});*/
                       	
	/**
	 * Funzione utilizzata per la creazione di controller dopo il bootstrap:
	 *  - elementId: id del tag html che conterrà il nuovo controller (anche un parent)
	 *  - name: nome del controller da creare
	 *  - constructor: function costruttore del controller 
	 */
	angular.module('BootApplication').controller = function( name, constructor ) {
		$controllerProvider.register( name, constructor );
		return( this );
	};
	
	/**
	 * Funzioni per la creazione dei service dopo il bootstrap del modulo
	 */
	angular.module('BootApplication').service = function( name, constructor ) {
		$provide.service( name, constructor );
		return( this );
	};
	
	/**
	 * TODO COSA FA?
	 */
	angular.module('BootApplication').factory = function( name, factory ) {
		$provide.factory( name, factory );
		return( this );
	};
	
	/**
	 * Funzione per la creazione delle direttive dopo il bootstrap del modulo
	 */
	angular.module('BootApplication').directive = function( name, factory ) {
		$compileProvider.directive( name, factory );
		return( this );
	};
	
}]);


/**
 * TODO COSA FA?
 */
angular.module('BootApplication').run( ['$rootScope', '$http', 'log', 'configuration', function($rootScope, $http, log, configuration) {
	
	var logLevel = log.getLevels().error;
		log.info("Impostato livello di log: " + logLevel);
		log.setLevel(logLevel);
	
	/**
	 * Aggiungo allo scope globale il path della pagina dove c'è il template della paginazione delle tabelle.
	 */
	$rootScope.ngTablePager = configuration.getParam("Constants").ContextPath+"/page/template/table/pager.jsp";	
	
	/**
	 *	Aggiungo le credeziali per l'utente  
	 **/
	var url = configuration.getParam("Constants").ContextPath + "getUserId.pjson";
	$http.get(url).success(function(response){
		$rootScope.idUser = response.aaData;
	}).error(function(){
		console.log("Error");
	});
}]);